package com.itheima.取快递;

public class Demo {
    public static void main(String[] args) {
            new Thread(()->{
                int count=0;
                //死循环
                while (true) {
                    //加锁
                    synchronized ("送快递"){
                        //判断还要不要送
                         if (div.count==0){
                             break;
                         }else {
                             if (div.flag) {
                                 //暂时没有派件可送就等待
                                 try {
                                     "快递柜".wait();
                                 } catch (InterruptedException e) {
                                     e.printStackTrace();
                                 }
                             }else {
                                 //有派件就要去送
                                 count++;
                                 System.out.println("快递员正在派送第"+count+"派件");
                                 //修改快递柜状态为true
                                 div.flag=true;
                                 //联系用户取快递
                                 "快递柜".notify();
                             }
                         }
                    }
                }
            }).start();



            //创建用户线程并启动
        new Thread(()->{
            int count=0;

            while (true){
                synchronized ("快递柜"){
                    if (div.count==0){
                        break;
                    }else {
                        if (div.flag){
                            count++;
                            //有快件就取回家
                            System.out.println("用户张先生在取第"+count+"个快件");
                            //取一件快递柜的快件就减一
                            div.count--;
                            div.flag=false;
                            "快递柜".notify();
                        }else {
                            try {
                                "快递柜".wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        }).start();


    }
}
class div{
      //  true，表示快递柜有快递，false表示没有
    public static boolean flag=false;
//假设要送30天的快递
    public static int count=20;

}